今天我們要來了解Cookie-Based Authentication~
cookie是網站儲存在user設備上的小文件,例如使用者設定,保持登錄狀態,甚至是廣告的個性化等等,這些都有可能儲存在我們的設備上,所以有些網站一進去就會問你要不要儲存它們家的cookie XD
通常cookie包含許多私人的訊息,因此我們可以自行在瀏覽器中管理和刪除cookie,來保護我們的隱私(順便清空間?)
那麼cookie-based Authentication想當然就是利用cookie來認證,它是怎麼做到的呢?
當使用者登錄成功後,server會給一個sessionId儲存在使用者的cookie裡面,之後的請求,瀏覽器都會將該cookie帶到header當中,server就可以透過檢查此cookie來驗證user的身分啦。
我們會覺得它跟Token-Based Authentication很像,只是一個用token,一個用cookie,它們的差異是甚麼呢?
特點 | Cookie-Based Authentication | Token-Based Authentication |
---|---|---|
存儲位置 | Session ID存儲在瀏覽器的Cookie中 | Token存儲在客戶端(可以是瀏覽器的 Local Storage或Cookie) |
跨域支持 | 跨域支持有限(需要配置 CORS 和 Cookies) | 跨域支持更好 |
狀態性 | 狀態性,session存在於服務器上 | 無狀態性,服務器不存儲session訊息 |
使用場景 | 傳統的多頁應用 | 單頁應用(SPA)、移動應用、API 驅動的應用 |
用戶登出 | 服務器端需要銷毀session | 客戶端可以直接丟棄 Token |
他們之間還是有不一樣的地方,例如cookie就需要額外一些設置才能支援CORS,而token不依賴cookie,不受瀏覽器同源策略的限制。
HttpOnly
標記,使得它們無法被 JavaScript 訪問,從而減少了XSS攻擊的風險。Secure
標記確保 Cookies 僅在 HTTPS 連接中傳輸,增強了通信的安全性。今天我們知道了cookie-based authentication的工作流程,並了解了它的優缺點,對認證這塊又更加清楚了。
https://stackoverflow.com/questions/17769011/how-does-cookie-based-authentication-work